package cn.lianxi.kaoshi._08_;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.TreeSet;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

/**
 * 通过java api读取hdfs的第1个文件/tmp/number1.txt文件，存入一个set当中。  通过java
 * 
 * api读取hdfs的第2个文件/tmp/number2.txt文件，存入一个set当中。  通过java代码，比较两个set当中相同的单词有哪些。
 * 
 * ，传入本地的输入文件和hdfs的输出文件路径。
 * 
 * @author yingfing
 *
 */
public class _08_ {

	public static void main(String[] args) throws Exception {

		TreeSet<String> numSets1 = new TreeSet<String>();
		TreeSet<String> numSets2 = new TreeSet<String>();

		// 0. 获取集群配置信息
		Configuration conf = new Configuration();
		// 1. 获取文件系统
		FileSystem fs = FileSystem.get(conf);

		// 2. 获取文件输出流
		Path path1 = new Path("/user/zhaoyingfei/tmp/num1.txt");
		Path path2 = new Path("/user/zhaoyingfei/tmp/num2.txt");
		FSDataInputStream in1 = fs.open(path1);
		FSDataInputStream in2 = fs.open(path2);

		// 3. 读取文件内容
		InputStreamReader isr1 = new InputStreamReader(in1);
		InputStreamReader isr2 = new InputStreamReader(in2);
		BufferedReader br1 = new BufferedReader(isr1);
		BufferedReader br2 = new BufferedReader(isr2);

		// 4. 存入 set
		String str = null;
		while ((str = br1.readLine()) != null) {
			numSets1.add(str);
		}
		while ((str = br2.readLine()) != null) {
			numSets2.add(str);
		}

		// 5.关闭流
		fs.close();

		int count = 0;
		// 6. 比较文件相同地方
		for (String numSet1 : numSets1) {
			for (String numSet2 : numSets2) {
				if (numSet1.equals(numSet2)) {
					System.out.println("相同的单词有 : " + numSet1);
					count++;
				}
			}
		}
		System.out.println("相同的个数有 : " + count + "个 !");
	}

}
